package cn.group7.padserver.pojo;

import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Tolerate;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.List;

/**
 * @author 谷汉斌
 * @description 用户类
 * @createTime 2024/7/22 下午7:24
 */
@Builder
@Data
public class User {
    /**
     * 用户名
     */
    @NotBlank(message = "账号不能为空")
    @Pattern(regexp = "^[a-zA-Z][A-Za-z0-9]{2,9}+$", message = "账号必须以字母开头，长度在3-10之间，只能包含英文字符、数字")
    private String userName;
    /**
     * 密码
     */
    @Pattern(regexp = "^[a-zA-Z][a-zA-Z0-9_]{5,17}$", message = "密码必须以字母开头，长度在6-18之间，只能包含英文字符、数字和下划线")
    @NotBlank(message = "密码不能为空")
    private String password;
    /**
     * 昵称
     */
    @NotBlank(message = "昵称不能为空")
    private String nickName;
    /**
     * 真实姓名
     */
    private String realName;
    /**
     * 身份证号
     */
    @Pattern(regexp = "^\\d{15}|\\d{18}$", message = "请输入15或18位有效身份证号")
    private String identityNum;
    /**
     * 手机号
     */
    @Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "请输入正确的手机号")
    private String phone;
    /**
     * 地址
     */
    private String address;
    /**
     * 角色
     */
    @Pattern(regexp = "^(user|expert|admin)$", message = "设置角色请输入 user,expert,admin 等角色")
    private String role;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 积分
     */
    private int integral;
    /**
     * 信誉
     */
    private int credit;
    /**
     * 头像
     */
    private String avatar;

    @Tolerate
    public User() {
    }
}
